package com.ecjtu.stadiumre_servations.entity.domain;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.time.LocalDateTime;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

/**
* 预约记录表
* @TableName bookings
*/
@Data
public class Booking implements Serializable {

    /**
    * 预约编号（主键）
    */
    @TableId(value = "booking_id", type = IdType.INPUT)
    @NotBlank(message="[预约编号（主键）]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("预约编号（主键）")
    @Length(max= 50,message="编码长度不能超过50")
    private String bookingId;
    /**
    * 学生学号（外键）
    */
    @NotBlank(message="[学生学号（外键）]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("学生学号（外键）")
    @Length(max= 50,message="编码长度不能超过50")
    private String studentId;
    /**
    * 场地编号（外键）
    */
    @NotNull(message="[场地编号（外键）]不能为空")
    @ApiModelProperty("场地编号（外键）")
    private String venueId;
    /**
    * 预约开始时间（精确到分钟）
    */
    @NotNull(message="[预约开始时间（精确到分钟）]不能为空")
    @ApiModelProperty("预约开始时间（精确到分钟）")
    private LocalDateTime bookingStartTime;
    /**
    * 预约结束时间（精确到分钟）
    */
    @NotNull(message="[预约结束时间（精确到分钟）]不能为空")
    @ApiModelProperty("预约结束时间（精确到分钟）")
    private LocalDateTime bookingEndTime;
    /**
     * 预约总价
     */
    @ApiModelProperty("预约总价")
    private double bookingTotalPrice;
    /**
     * 预约类型
     */
    @ApiModelProperty("预约类型")
    private String bookingType;
    /**
    * 状态： 待付款/待使用/已使用/已取消
    */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("状态：待付款/待使用/已使用/已取消")
    @Length(max= 20,message="编码长度不能超过20")
    private String bookingStatus;
    /**
    * 预约创建时间
    */
    @ApiModelProperty("预约创建时间")
    private LocalDateTime createTime;

}
